package test;

import t1.MethodCalculate;
import t1.Arith;
import t1.SFE_s;

import java.security.PrivateKey;
import java.util.ArrayList;

// 码字信息阶段测试
/*思路
假设 已有 文本读取产生的码字char数组arraylist  word_array 和码字总数sum和码字出现的次数数组word_sum
*  word_array和word_sum 下标一一对应
    1 调用CalculatePx返回 px_array
*   2 调用CalculateFx 返回fx_array
    3 调用CalculateFabx 返回fabx_array
    4 调用CalculateLx 返回lx_array
    5 调用CalculateCode 返回Code_array
    6 调用Assignment 将各种信息存储到码字对象中
*
*
* */
public class mainT1 {
    public static void main(String[] args) {
//        创建空白的

        long t1 = System.currentTimeMillis();
        MethodCalculate method = new MethodCalculate();

//        创建码字array
        ArrayList<Character> word_array = new ArrayList<>();
        word_array.add('永');
        word_array.add('康');
        word_array.add('好');
        word_array.add('帅');
        word_array.add('啊');
        word_array.add('爱');
        word_array.add('死');
        word_array.add('真');
        word_array.add('是');
        word_array.add('太');


        word_array.add('周');
        word_array.add('熙');
        word_array.add('雎');
        word_array.add('耶');
        word_array.add('哈');


        System.out.println("word_array输出: "+word_array);
//        码字总数 100


        int sum=150;
//        码字出现次数数组 array
        ArrayList<Integer> word_sum = new ArrayList<>();
//        加入 次数
        for (int i = 0; i < 7; i++) {
            word_sum.add(10);
        }
        word_sum.add(20);
        word_sum.add(5);
        word_sum.add(5);
        word_sum.add(10);
        word_sum.add(10);
        word_sum.add(10);
        word_sum.add(10);
        word_sum.add(10);

//        1 调用CalculatePx返回 px_array

        ArrayList<Double> px_array = method.CalculatePx(sum, word_sum);
        System.out.println("==== px 输出 =====");
        System.out.println(px_array);
//         2 调用CalculateFx 返回fx_array
        ArrayList<Double> fx_array = method.CalculateFx(px_array);
        System.out.println("===========fx 输出=============");
        System.out.println(fx_array);
//        System.out.println("=============");
//        System.out.println((double) 0.1+0.1+0.1);
//
//        double add = Arith.add(0.2, 0.1);
//        double add3 = Arith.add(0.2, 0.3);
//        double add2 = Arith.add(0.002, 0.001);
//        System.out.println(" arith 输出"+add);
//        System.out.println(" arith 输出"+add2);
//        System.out.println(" arith 输出"+add3);


//        调用CalculateFabx 返回fabx_array
        ArrayList<Double> fbax_array = method.CalculateFabx(px_array, fx_array);

//          调用CalculateLx 返回lx_array
        ArrayList<Integer> lx_array = method.CalculateLx(px_array);

//        调用transform 返回trans_array
        ArrayList<String> trans_array = method.Transform(fbax_array, lx_array);

//        调用CalculateCode 返回Code_array
        ArrayList<String> Code_array = method.CalculateCode(lx_array, trans_array);
//
//        创建存储码字信息的arraylist
        ArrayList<SFE_s> sfe_s = new ArrayList<>();
        method.Assignment(sfe_s,word_array,px_array,fx_array,fbax_array,lx_array,Code_array,trans_array);

        long t2 = System.currentTimeMillis();
        System.out.println(t2 - t1);
    }
}
